As the number of local area networks (LANs) have increased, Internet Connection Sharing Devices (ICSDs) have become more common. An ICSD may serve as a gateway to the Internet for a LAN. Rather than having each device on a LAN acquire its own Internet connection, the LAN devices may benefit from sharing one Internet connection. Such sharing may be accomplished via an ICSD. An ICSD may be a device dedicated to its role as an ICSD or it may be a process running on a device connected to the Internet and the LAN. Conventionally, detecting the presence of such ICSDs by applications running on devices connected to a LAN has been difficult. For example, an ICSD may not have been located at a well-known port address, an ICSD may not have advertised it services, and/or there may not have been a method for communicating the status of an ICSD to applications and devices connected to a LAN.
As the gateway to the Internet for the LAN, the status of the ICSD may be important to other applications and devices connected to the LAN. For example, if a device connected to the LAN requests a file from the Internet, and that file was not received, the device may attempt to determine whether there was a problem with the file transfer itself or with the ICSD. Conventionally, monitoring the ICSD from applications running on devices connected to a LAN has been difficult. Similarly, controlling an ICSD may be an important aspect of LAN management. Such control of an ICSD may be difficult because there may not have been a protocol for communicating with an ICSD. For example, an application running on a device on the LAN, and/or a device on the LAN, may request that the ICSD report on the status of a connection, and then selectively change the status of that connection. This has been difficult to achieve since there may have been no protocol for querying the status of an ICSD. Similarly, applications running on devices connected to a LAN may interrogate the status of an ICSD, change that status, and selectively modify the behavior of the application based on the status, and the attempt to change the status. This has been difficult to achieve since there may have been no Application Programming Interface (API) with which an application could interact to gain access to the ICSD.